EMMA (code coverage tool)
EMMA is an open source toolkit for measuring and reporting Java code coverage. EMMA is distributed under the terms of Common Public License v1.0.
EMMA is not currently under active development; the last stable release took place in mid-2005.[1] EMMA works by wrapping each line of code and each condition with a flag, which is set when that line is executed.[2]
Features
- instrument classes for coverage either offline (before they are loaded) or on the fly (using an instrumenting application classloader).
- Supported coverage types: class, method, line, basic block. EMMA can detect when a single source code line is covered only partially.
- Coverage stats are aggregated at method, class, package, and "all classes" levels.
- Output report types: plain text, HTML, XML. All report types support drill-down, to a user-controlled detail depth. The HTML report supports source code linking.
- Output reports can highlight items with coverage levels below user-provided thresholds.
- Coverage data obtained in different instrumentation or test runs can be merged together.
- it is possible to dump or reset coverage data remotely and without a JVM exit.
- does not require access to the source code and degrades gracefully with decreasing amount of debug information available in the input classes.
- can instrument individial .class files or entire .jars (in place, if desired). Efficient coverage subset filtering is possible, too.
- Makefile and ANT build integration are supported on equal footing.
- The runtime overhead of added instrumentation is small (5-20%) and the bytecode instrumentor itself is very fast (mostly limited by file I/O speed). Memory overhead is a few hundred bytes per Java class.
- EMMA is 100% pure Java, has no external library dependencies, and works in any Java 2 JVM (even 1.2.x).
Alternatives
EMMA-based tools
External links
References
- ^ EMMA code coverage files on SourceForge.net
- ^ Expert Spring MVC and Web Flow; By Seth Ladd, Darren Davison, Steven Devijver, Colin Yates, p. 289